#include <REGX52.H>
#include "OneWire.h"

//DS18B20指令
#define DS18B20_SKIP_ROM                      0xCC
#define DS18B20_CONVERT_T                     0x44
#define DS18B20_SCRATCHPAD                    0xBE


/**
  * @brief  DS18B20开始温度变换
  * @param  无
  * @retval 无
  */
void DS18B20_ConvertT()
{
	OneWire_Init();                      //初始总线
	OneWire_SendByte(DS18B20_SKIP_ROM);  //忽略ROM指令
	OneWire_SendByte(DS18B20_CONVERT_T); //转换温度指令
}

/**
  * @brief  DS18B20读取温度
  * @param  无
  * @retval 温度数值
  */
float DS18B20_ReadT()
{
	unsigned char TLSB,TMSB;
	int Temp;
	float T;
	OneWire_Init();
	OneWire_SendByte(DS18B20_SKIP_ROM);
	OneWire_SendByte(DS18B20_SCRATCHPAD);//读暂存器指令
	TLSB = OneWire_ReceiveByte();
	TMSB = OneWire_ReceiveByte();
	Temp = (TMSB<<8)|TLSB;
	T=Temp/16.0;
	return T;
}